#include "BulletSoftBody/btSoftBodyHelpers.h"
#ifdef __cplusplus
extern "C" {
#endif
fDrawFlags* bullet_NewfDrawFlags(){
	fDrawFlags* wrap_out = new fDrawFlags();
	return wrap_out;
}

btSoftBodyHelpers* bullet_NewbtSoftBodyHelpers(){
	btSoftBodyHelpers* wrap_out = new btSoftBodyHelpers();
	return wrap_out;
}

float bullet_btSoftBodyHelpers_CalculateUV(btSoftBodyHelpers* c_this,int resx,int resy,int ix,int iy,int id){
	int c_arg_resx=resx;
	int c_arg_resy=resy;
	int c_arg_ix=ix;
	int c_arg_iy=iy;
	int c_arg_id=id;
	float c_out = c_this->CalculateUV(c_arg_resx,c_arg_resy,c_arg_ix,c_arg_iy,c_arg_id);
	float wrap_out = (c_out);
	return wrap_out;
}

void bullet_btSoftBodyHelpers_Draw(btSoftBodyHelpers* c_this,btSoftBody* psb,btIDebugDraw* idraw,int drawflags){
	btSoftBody * c_arg_psb=(btSoftBody *)(void*)(psb);
	btIDebugDraw * c_arg_idraw=(btIDebugDraw *)(void*)(idraw);
	int c_arg_drawflags=drawflags;
	c_this->Draw(c_arg_psb,c_arg_idraw,c_arg_drawflags);
}

void bullet_btSoftBodyHelpers_DrawClusterTree(btSoftBodyHelpers* c_this,btSoftBody* psb,btIDebugDraw* idraw,int mindepth,int maxdepth){
	btSoftBody * c_arg_psb=(btSoftBody *)(void*)(psb);
	btIDebugDraw * c_arg_idraw=(btIDebugDraw *)(void*)(idraw);
	int c_arg_mindepth=mindepth;
	int c_arg_maxdepth=maxdepth;
	c_this->DrawClusterTree(c_arg_psb,c_arg_idraw,c_arg_mindepth,c_arg_maxdepth);
}

void bullet_btSoftBodyHelpers_DrawFaceTree(btSoftBodyHelpers* c_this,btSoftBody* psb,btIDebugDraw* idraw,int mindepth,int maxdepth){
	btSoftBody * c_arg_psb=(btSoftBody *)(void*)(psb);
	btIDebugDraw * c_arg_idraw=(btIDebugDraw *)(void*)(idraw);
	int c_arg_mindepth=mindepth;
	int c_arg_maxdepth=maxdepth;
	c_this->DrawFaceTree(c_arg_psb,c_arg_idraw,c_arg_mindepth,c_arg_maxdepth);
}

void bullet_btSoftBodyHelpers_DrawFrame(btSoftBodyHelpers* c_this,btSoftBody* psb,btIDebugDraw* idraw){
	btSoftBody * c_arg_psb=(btSoftBody *)(void*)(psb);
	btIDebugDraw * c_arg_idraw=(btIDebugDraw *)(void*)(idraw);
	c_this->DrawFrame(c_arg_psb,c_arg_idraw);
}

void bullet_btSoftBodyHelpers_DrawInfos(btSoftBodyHelpers* c_this,btSoftBody* psb,btIDebugDraw* idraw,bool masses,bool areas,bool stress){
	btSoftBody * c_arg_psb=(btSoftBody *)(void*)(psb);
	btIDebugDraw * c_arg_idraw=(btIDebugDraw *)(void*)(idraw);
	bool c_arg_masses=masses;
	bool c_arg_areas=areas;
	bool c_arg_stress=stress;
	c_this->DrawInfos(c_arg_psb,c_arg_idraw,c_arg_masses,c_arg_areas,c_arg_stress);
}

void bullet_btSoftBodyHelpers_DrawNodeTree(btSoftBodyHelpers* c_this,btSoftBody* psb,btIDebugDraw* idraw,int mindepth,int maxdepth){
	btSoftBody * c_arg_psb=(btSoftBody *)(void*)(psb);
	btIDebugDraw * c_arg_idraw=(btIDebugDraw *)(void*)(idraw);
	int c_arg_mindepth=mindepth;
	int c_arg_maxdepth=maxdepth;
	c_this->DrawNodeTree(c_arg_psb,c_arg_idraw,c_arg_mindepth,c_arg_maxdepth);
}

void bullet_btSoftBodyHelpers_duplicateFaces(btSoftBodyHelpers* c_this,char* filename,btSoftBody* psb){
	char const * c_arg_filename=(char const *)(void*)(filename);
	btSoftBody const * c_arg_psb=(btSoftBody const *)(void*)(psb);
	c_this->duplicateFaces(c_arg_filename,c_arg_psb);
}

void bullet_btSoftBodyHelpers_extrapolateBarycentricWeights(btSoftBodyHelpers* c_this,btSoftBody* psb){
	btSoftBody * c_arg_psb=(btSoftBody *)(void*)(psb);
	c_this->extrapolateBarycentricWeights(c_arg_psb);
}

void bullet_btSoftBodyHelpers_generateBoundaryFaces(btSoftBodyHelpers* c_this,btSoftBody* psb){
	btSoftBody * c_arg_psb=(btSoftBody *)(void*)(psb);
	c_this->generateBoundaryFaces(c_arg_psb);
}

void bullet_btSoftBodyHelpers_getBarycentricWeights(btSoftBodyHelpers* c_this,btVector3* a,btVector3* b,btVector3* c,btVector3* d,btVector3* p,btVector4* bary){
	btVector3 const& c_arg_a=(btVector3 const&)(*a);
	btVector3 const& c_arg_b=(btVector3 const&)(*b);
	btVector3 const& c_arg_c=(btVector3 const&)(*c);
	btVector3 const& c_arg_d=(btVector3 const&)(*d);
	btVector3 const& c_arg_p=(btVector3 const&)(*p);
	btVector4& c_arg_bary=(btVector4&)(*bary);
	c_this->getBarycentricWeights(c_arg_a,c_arg_b,c_arg_c,c_arg_d,c_arg_p,c_arg_bary);
}

void bullet_btSoftBodyHelpers_getBarycentricWeights1(btSoftBodyHelpers* c_this,btVector3* a,btVector3* b,btVector3* c,btVector3* p,btVector4* bary){
	btVector3 const& c_arg_a=(btVector3 const&)(*a);
	btVector3 const& c_arg_b=(btVector3 const&)(*b);
	btVector3 const& c_arg_c=(btVector3 const&)(*c);
	btVector3 const& c_arg_p=(btVector3 const&)(*p);
	btVector4& c_arg_bary=(btVector4&)(*bary);
	c_this->getBarycentricWeights(c_arg_a,c_arg_b,c_arg_c,c_arg_p,c_arg_bary);
}

void bullet_btSoftBodyHelpers_interpolateBarycentricWeights(btSoftBodyHelpers* c_this,btSoftBody* psb){
	btSoftBody * c_arg_psb=(btSoftBody *)(void*)(psb);
	c_this->interpolateBarycentricWeights(c_arg_psb);
}

void bullet_btSoftBodyHelpers_ReoptimizeLinkOrder(btSoftBodyHelpers* c_this,btSoftBody* psb){
	btSoftBody * c_arg_psb=(btSoftBody *)(void*)(psb);
	c_this->ReoptimizeLinkOrder(c_arg_psb);
}

void bullet_btSoftBodyHelpers_writeObj(btSoftBodyHelpers* c_this,char* file,btSoftBody* psb){
	char const * c_arg_file=(char const *)(void*)(file);
	btSoftBody const * c_arg_psb=(btSoftBody const *)(void*)(psb);
	c_this->writeObj(c_arg_file,c_arg_psb);
}

void bullet_btSoftBodyHelpers_writeState(btSoftBodyHelpers* c_this,char* file,btSoftBody* psb){
	char const * c_arg_file=(char const *)(void*)(file);
	btSoftBody const * c_arg_psb=(btSoftBody const *)(void*)(psb);
	c_this->writeState(c_arg_file,c_arg_psb);
}

#ifdef __cplusplus
}
#endif
